package com.yuandian.customer.perception.controller;

import com.alibaba.cloud.commons.lang.StringUtils;
import com.yuandian.api.customer_perception.po.IndexParamsPo;
import com.yuandian.bpm.common.core.util.R;
import com.yuandian.customer.perception.service.IIndexService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.constraints.NotNull;
import java.text.ParseException;

/**
 * 说明：首页controller
 * @Author yanjun
 * @Date 2021/3/8 13:22
 */
@RestController
@RequestMapping("/home/index")
public class IndexController {

    @Autowired
    private IIndexService indexService;

/*

    @Autowired
    private ITableConfigService tableConfigService;
*/

    /**
     * 根据表名查询表周期信息
     * @param tableName 表名
     * @return 通用返回对象
     */
    @GetMapping("/queryTableSaveCycleInfoByName/{tableName}")
    public R<Object> queryTableSaveCycleInfoByName(@NotNull @PathVariable String tableName) {
//        return tableConfigService.queryTableSaveCycleInfoByName(tableName); TODO 如果前端不需要则删除
		return null;
    }

    /**
     * 查询系统类型统计量topN
     * @param params 首页请求对象
     * @return 通用返回对象
     */
    @GetMapping("/querySystemTypeTopNItem")
    public R<Object> querySystemTypeTopNItem(IndexParamsPo params) {
        return indexService.querySystemTypeTopNItem(params);
    }

    /**
     * 查询业务统计量topN(总数量降序前n个重点业务)
     * @param params 首页请求对象
     * @return 通用返回对象
     */
    @GetMapping("/queryBusiTopNItem")
    public R<Object> queryBusiTopNItem(IndexParamsPo params) {
        return indexService.queryBusiTopNItem(params);
    }

    /**
     * 首页项查询(总业务)(一条数据，如果查询出多条数据会报错)
     * @param params 首页请求对象
     * @return 通用返回对象
     */
    @GetMapping("/queryBusiAllItem")
    public R<Object> queryBusiAllItem(IndexParamsPo params) {
        return indexService.queryBusiAllItem(params);
    }

    /**
     * 首页项查询(服务用户数)(一条数据，如果查询出多条数据会报错)
     * @param params 首页请求对象
     * @return 通用返回对象
     */
    @GetMapping("/queryUserCountItem")
    public R<Object> queryUserCountItem(IndexParamsPo params) {
        return indexService.queryUserCountItem(params);
    }

    /**
     * 根据系统类型查询首页项趋势
     * 业务访问量,业务受理量-busi_sys_detail_stat_m-KhgzBusinessDetailStatTask-根据系统类型查询首页项趋势图-延迟3分钟-/api-khgz/home/index/queryItemTrendBySystemType
     * @param params 首页请求对象
     * @return 通用返回对象
     */
    @GetMapping("/queryItemTrendBySystemType")
    public R<Object> queryItemTrendBySystemType(IndexParamsPo params) {
        return indexService.queryItemTrendBySystemType(params);
    }

    /**
     * 查询首页项趋势
     * 业务访问量,业务受理量-busi_sys_detail_stat_m-KhgzBusinessDetailStatTask-查询首页项趋势图-延迟3分钟-/api-khgz/modules/home/index/queryItemTrend
     * @param params 首页请求对象
     * @return 通用返回对象
     */
    @GetMapping("/queryItemTrend")
    public R<Object> queryItemTrend(IndexParamsPo params) {
        return indexService.queryItemTrend(params);
    }

    /**
     * 查询地图区域业务量列表
     * @param params 首页请求对象
     * @return 通用返回对象
     */
    @GetMapping("/queryAreaBusiList")
    public R<Object> queryAreaBusiList(IndexParamsPo params) {
        return indexService.queryAreaBusiList(params);
    }

    /**
     * 查询地图区域办事处列表
     * @param params 首页请求对象
     * @return 通用返回对象
     */
    @GetMapping("/queryHallBusiList")
    public R<Object> queryHallBusiList(IndexParamsPo params) {
        return indexService.queryHallBusiList(params);
    }

    /**
     * 查询营业员活跃趋势
     * 当前活跃数量,昨日活跃数量-busi_operator_online_stat-OperatorDetailTask-营业员在线数量趋势图-延迟0分钟-/api-khgz/modules/home/index/queryOperatorOnlineTrend
     * @param params 首页请求对象
     * @return 通用返回对象
     */
    @GetMapping("/queryOperatorOnlineTrend")
    public R<Object> queryOperatorOnlineTrend(IndexParamsPo params) throws ParseException {
        return indexService.queryOperatorOnlineTrend(params);
    }

    /**
     * 查询营业员活跃趋势
     * 当前活跃数量,昨日活跃数量-busi_operator_online_stat-OperatorDetailTask-营业员在线数量趋势图-延迟0分钟-/api-khgz/modules/home/index/queryOperatorOnlineTrend
     * @param params 首页请求对象
     * @return 通用返回对象
     */
    @GetMapping("/queryOperatorOnlineTrendCrossDay")
    public R<Object> queryOperatorOnlineTrendCrossDay(IndexParamsPo params) throws ParseException {
        return indexService.queryOperatorOnlineTrendCrossDay(params);
    }


    /**
     * 查询业务告警类型
     * @param params 首页请求对象
     * @return 通用返回对象
     */
    @GetMapping("/queryBusiAlarmType")
    public R<Object> queryBusiAlarmType(IndexParamsPo params) {
        return indexService.queryBusiAlarmType(params);
    }

    /**
     * 查询告警业务统计数
     * @param params 首页请求对象
     * @return 通用返回对象
     */
    @GetMapping("/queryBusiAlarmStatisCount")
    public R<Object> queryBusiAlarmStatisCount(IndexParamsPo params) {
        return indexService.queryBusiAlarmStatisCount(params);
    }

    /**
     * 查询告警业务TopN
     * @param params 首页请求对象
     * @return 通用返回对象
     */
    @GetMapping("/queryBusiAlarmTopN")
    public R<Object> queryBusiAlarmTopN(IndexParamsPo params) {
//        businessCode 值为-1,代表未知
        if (StringUtils.isBlank(params.getBusinessCode())){
            params.setBusinessCode(null);
        }
        if (params.getBusinessCode()!= null && params.getBusinessCode().equals("-1")){
            params.setBusinessCode("");
        }

        return indexService.queryBusiAlarmTopN(params);
    }
}
